Представление Devices отображает подключенные Android-устройства. Для каждого подключенного Android-устройства Devices-представление показывает все запущенные на нем процессы, каждый из которых работает в своем экземпляре виртуальной машины Dalvik. Каждый отображаемый процесс представляет инсталлированное и запущенное на Android-устройстве приложение, поэтому идентификация процесса производится по имени пакета приложения. Так как виртуальная машина Dalvik работает поверх ядра Linux, каждый процесс имеет свой Linux-идентификатор, отображаемый в окне Devices после имени пакета. Крайний правый столбец окна Devices показывает номер порта, который DDMS-инструмент назначает для подсоединения Eclipse-отладчика к экземпляру Dalvik-машины с использованием протокола JDWP (Java Debug Wire Protocol). По умолчанию Eclipse-отладчик подсоединяется к статическому порту 8700, на который перенаправляются трафики экземпляров Dalvik-машины от всех портов. DDMS-инструмент взаимодействует с подключенным Android-устройством с помощью инструмента Android Debug Bridge (adb), имеющего клиент-серверную архитектуру. DDMS-инструмент создает adb-клиента, который взаимодействует с adb-демоном (фоновый процесс, работающий в Android-устройстве) через adb-сервер.
Панель инструментов представления Devices содержит следующие кнопки:
(Debug the selected process, …) – подсоединяет процесс, представляющий Android-приложение с открытым в среде Eclipse проектом, к Eclipse-отладчику, для работы с которым используется перспектива Debug.
(Update Heap) – включает информацию об использовании динамической памяти для процесса.
(Dump HPROF file) – создает снимок динамической памяти в виде HPROF-файла. В случае Android-устройств версии 2.1 и ранее для создания HPROF-файла требуется наличие SD-карты памяти, а также разрешения <uses-permission http://www.eclipse.org/mat/).rmission. WRITE_EXTERNAL_STORAGE»/> в файле манифеста AndroidManifest. xml Android-приложения. Анализ HPROF-файла можно выполнить с помощью Eclipse-плагина Memory Analyzer (MAT) (android:name="android.pe
(Cause GC) – вызывает сборщика мусора, что влечет за собой сборку данных о динамической памяти.
(Update Threads) – включает информацию о запущенных потоках для выбранного процесса.
(Start Method Profiling) и (Stop Method Profiling) – запускает и останавливает запись информации о выполнении методов приложения в Trace-файл, который после остановки записи открывается в Traceview-окне, отображающем журнал выполнения в виде двух панелей: Timeline Panel – с помощью цветовой гаммы и шкалы времени описывает старт и остановку выполнения метода в потоке, Profile Panel – показывает детали выполнения методов. В случае Android-устройств версии 2.1 и ранее для создания Trace-файла требуется наличие SD-карты памяти, а также разрешения <uses-permission android:name="android.permission. WRITE_EXTERNAL_STORAGE»/> в файле манифеста AndroidManifest. xml Android-приложения. За отображение окна Traceview отвечает инструмент traceview набора SDK Tools.
(Stop Process) – останавливает выбранный процесс.
(Screen Capture) – открывает окно Device Screen Capture, которое позволяет создавать скриншоты экрана Android-устройства.
(Dump View Hierarchy for UI Automator) – обеспечивает тестирование GUI-интерфейса приложения путем получения снимка экрана Tablet-устройства API 16 и выше, предоставляя визуальный интерфейс для проверки GUI-иерархии и просмотра свойств отдельных компонентов GUI-интерфейса. Работа команды обеспечивается инструментом uiautomatorviewer набора Android SDK.
(Capture system wide trace using Android systrace) – для устройства Android 4.1 (API Level 16) помогает анализировать производительность приложения, формируя журнал событий системы и приложения в виде HTML-файла.
(Start OpenGL Trace) – для устройства Android 4.1 (API Level 16) – помогает анализировать выполнение графических OpenGL ES команд.
Меню панели инструментов представления Devices, помимо вышеперечисленных команд, содержит команду Reset adb, обеспечивающую перезапуск adb-инструмента.
Представление Emulator Control дает возможность имитировать для экземпляра Android-эмулятора входящий звонок, SMS-сообщение и локализацию.
Списки Voice: и Data: раздела Telephony Status представления Emulator Control позволяют установить состояние GPRS-соединения:
unregistered – сеть отсутствует.
home – локальная сеть.
roaming – телефон в роуминге.
searching – поиск сети.
denied – только звонки экстренных служб.
Список Speed: раздела Telephony Status представления Emulator Control позволяет установить скорость передачи данных сети:
GSM – 14.4 килобитсек.
HSCSD – от 14.4 до 43.2 килобитсек.
GPRS – от 40.0 до 80.0 килобитсек.
EDGE – от 118.4 до 236.8 килобитсек.
UMTS – от 128.0 до 1920.0 килобитсек.
HSDPA – от 348.0 до 14400.0 килобитсек.
Full – без ограничений.
Список Latency: раздела Telephony Status представления Emulator Control позволяет имитировать уровень задержки сети:
GPRS – от 150 до 550 миллисекунд.
EDGE – от 80 до 400 миллисекунд.
UMTS – от 35 до 200 миллисекунд.
None – задержка отсутствует.
Раздел Telephony Actions представления Emulator Control дает возможность имитировать входящий звонок и SMS-сообщение.
Раздел Location Controls представления Emulator Control обеспечивает определение локализации Android-устройства вручную (вкладка Manual) или с помощью файлов GPS eXchange (вкладка GPX) и Keyhole Markup Language (вкладка KML).
Представление LogCat обеспечивает отображение всех системных сообщений от Android-устройства, в то время как представление Console показывает только сообщения, относящиеся к изменениям состояния Android-устройства и его приложений.
LogCat-окно отображает системные сообщения в таблице, содержащей столбцы Level (приоритет сообщения), Time (время создания сообщения), PID (Linux-идентификатор процесса), Application (имя пакета приложения), Tag (идентификатор системного компонента, от которого получено сообщение), Text (текст сообщения). Соответственно панель инструментов представления LogCat обеспечивает фильтрацию отображаемых сообщений по приоритету, тэгу, по идентификатору и имени пакета приложения.
Представление Threads показывает запущенные потоки для выбранного процесса. Для просмотра потоков необходимо в окне Devices выбрать процесс и нажать кнопку Update Threads панели инструментов окна Devices.
Threads-окно отображает информацию о потоках в виде двух таблиц. Верхняя таблица показывает все запущенные потоки для выбранного процесса и имеет следующие столбцы:
ID – Dalvik-идентификатор потока – нечетные числа, начиная с 3. Демоны помечаются «*».
TID – Linux-идентификатор потока.
Status – статус потока:
Wait – вызван метод Object. wait ().
Native – выполняет системный код.
Vmwait – ожидает Dalvik-ресурс.
Runnable – может быть запущен.
TimedWait – ожидает в течение определенного количества времени.
utime – общее время выполнения пользовательского кода (единица 10 мс.).
stime – общее время выполнения системного кода (единица 10 мс.).
Name – имя потока.
Нижняя таблица для выбранного потока показывает выполняемый потоком код, указывая класс, метод, файл, строку и признак кода.
Представление Heap отображает информацию об использовании динамической памяти выбранным процессом. Для просмотра кучи процесса в Heap-окне необходимо в окне Devices выбрать процесс и нажать кнопку Update Heap, затем кнопку Cause GC панели инструментов окна Devices.
Представление Heap содержит три области. Самая верхняя область показывает таблицу структуры кучи процесса со столбцами ID (идентификатор кучи), Heap Size (общее количество памяти кучи), Allocated (количество занятой памяти кучи), Free (количество свободной памяти кучи), %Used (процент занятости кучи) и #Objects (количество объектов кучи), а также имеет кнопку Cause GC обновления информации о куче.
Далее расположена область с таблицей распределения объектов кучи по типам. Самая нижняя область отображает гистограмму распределения выбранного типа объектов по размерам занимаемой памяти.
Представление Allocation Tracker позволяет в реальном времени отследить объекты, для которых выделяется память. Для начала просмотра журнала выделения памяти для объектов необходимо в окне Devices выбрать процесс и нажать кнопку Start Tracking в окне Allocation Tracker, затем кнопку Get Allocations. В результате верхняя область окна Allocation Tracker покажет список объектов, созданных с момента нажатия кнопки Start Tracking до момента нажатия кнопки Get Allocations, с указанием выделенной памяти, идентификатора потока, класса и метода, а нижняя область – более детальную информацию для выбранного объекта, с указанием класса, метода, файла, строки и признака кода.